package com.wjj.getip.utils;

import com.qcloud.Module.Cns;
import com.qcloud.QcloudApiModuleCenter;
import com.qcloud.Utilities.Json.JSONObject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.TreeMap;

@Component
public class UpdateRecordModify {
    @Value("${private.SecretId}")
    private String SecretId;
    @Value("${private.SecretKey}")
    private String SecretKey;
    @Value("${private.domain}")
    private String domain;

    public void update(String recordId, String ip,String subDomain) {
        /* 如果是循环调用下面举例的接口，需要从此处开始你的循环语句。切记！ */
        TreeMap<String, Object> config = new TreeMap<String, Object>();
        config.put("SecretId", SecretId);
        config.put("SecretKey", SecretKey);
        /* 请求方法类型 POST、GET */
        config.put("RequestMethod", "GET");
        /* 区域参数，可选: gz:广州; sh:上海; hk:中国香港; ca:北美;等。 */
//        config.put("DefaultRegion", "gz");

        /*
         * 你将要使用接口所在的模块，可以从 官网->云api文档->XXXX接口->接口描述->域名
         * 中获取，比如域名：cvm.api.qcloud.com，module就是new Cvm()。
         */
        /*
         * DescribeInstances
         * 的api文档地址：http://www.qcloud.com/wiki/v2/DescribeInstances
         */
//        QcloudApiModuleCenter module = new QcloudApiModuleCenter(new Cvm(),config);
        QcloudApiModuleCenter moudle = new QcloudApiModuleCenter(new Cns(), config);
        TreeMap<String, Object> params = new TreeMap<String, Object>();
        // 将需要输入的参数都放入 params 里面，必选参数是必填的。
        // DescribeInstances 接口的部分可选参数如下
        params.put("offset", 0);
        params.put("limit", 10);
        params.put("domain", domain);
        params.put("recordId", recordId);
        params.put("subDomain", subDomain);
        params.put("recordType", "A");
        params.put("recordLine", "默认");
        params.put("value", ip);
        // 在这里指定所要用的签名算法，不指定默认为HmacSHA1
        // params.put("SignatureMethod", "HmacSHA256");
        // generateUrl 方法生成请求串，但不发送请求。在正式请求中，可以删除下面这行代码。
        // 如果是POST方法，或者系统不支持UTF8编码，则仅会打印host+path信息。
        // System.out.println(module.generateUrl("DescribeInstances", params));

        String result = null;
        try {
            // call 方法正式向指定的接口名发送请求，并把请求参数params传入，返回即是接口的请求结果。
//            result = moudle.call("DescribeInstances", params);
            result = moudle.call("RecordModify", params);
            // 可以对返回的字符串进行json解析，您可以使用其他的json包进行解析，此处仅为示例
            JSONObject json_result = new JSONObject(result);
            System.out.println(json_result);
        } catch (Exception e) {
            System.out.println("error..." + e.getMessage());
        }
    }
}
